vim: linebreak
  
bitmex gali pateikti blogus bucketus, kuriuose low arba high gali buti "viduje" open-close range'o.

TODO nepaisant keistu bucketu, pazaisti su skales parinkimu (automatiniu). kaip apibudinti ir automatiskai isgauti tinkama skale?  kuri gerai veiktu ir dideliam svyravime ir mazam.

jeigu y scale yra 2, tada 300 height'e sutelpa 150 tasku (kiekvienas gauna 2 heighto). tai zinant scale ir height, gali zinoti kiek informacijos galima matyti lange.

zinau kad mano origin yra 0,0 apacioje kaireje, su bet kokia skale. zinodamas lango auksti ir kiek i ji telpa, galiu paskaiciuoti kiek langa reikia pastumpti i virsu ar i apacia.

TODO betvarke su matricom.
kas yra initial matrica?
kodel (translate 0 0) arba (scale 1 1) kazka keicia?

galeciau bandyti sumodeliuoti _viska_ (hahahaha).
  - transformation matricas
  - piesima canvas'e

kaip parasyti speca, modeliuoti?
  - ka zinau
    - reikia algoritmo
    - as noriu kazka pasiekti
    - noriu suprasti kaip veikia sistema
  - kas jeigu formaliai isvardinsiu dalykus kuriuos zinau apie sistema?
    - gal tai atvers vartus abstraktesniam mastymui?

kaip vyksta tasko padejimas ant ekrano?
  - turi buti kazkoks isvertimas is loginiu koordinaciu i ekrano.
    - kiekviena logine koordinate turi atitinkama koordinate ekrane
      - bet ji gali buti uz ekrano ribu
  - ekranas turi ribas

pavyzdys
  - taskas - kaina 7000
  - logineje erdveje nupiesi taska x = tarkim 100, y = 7000
  - ekranas yra 300 pikseliu plocio ant 100 aukscio
    - be vertimo, ekrane taskas yra [7000/100] ekrano auksciu nuo ekrano apacios
      - (= tasko-atstumas-nuo-ekrano-apacios (/ tasko-y ekrano-aukstis))
      - (= tasko-atstumas-nuo-ekrano-kaires (/ tasko-x ekrano-plotis))
      - jeigu ekrano origin yra jo apacioje
  - tarkim yra du taskai 7000 ir 6000.
    - tarp ju atstumas yra 1000.
    - reiskia kad jie abu tilptu i ekrana, jo loginis aukstis turi buti
        nors 1000.
    - jeigu ekrano aukstis 100,
      - vienas jo aukscio vienetas turi reprezentuoti (1000/100)=10 loginiu
        vienetu.
      - (= scale-y (/ tasku-range-y ekrano-aukstis))
      - (= scale-x (/ tasku-range-x ekrano-plotis))
  - ar tai generalizuojasi?
    - 

skaitant draw/cd.rkt
  - kas yra scroll-dx ir -dy?
    - susije su clipping'u
  - do-reset-matrix apibudina kaip aux nustatymai itakoja matrica
    - panasu kad sis metodas kvieciamas kai kazkas pasikeicia ir reikia
      perskaiciuoti matrica
  - get-transformation isvardina matricos "parametrus"
    - (get-initial-matrix)
      origin-x origin-y
      scale-x scale-y
      rotation
  - kodel yra scale ir set-scale, bet nera set-translate, tik translate
    - gal del to kad set-origin yra set-translate
  - paeksperimentavus
    - jei naudoji scale
      - pakartotini identiski callai kas karta duoda kita rezultata, nes jie
        scalina ta pati per ta pati
    - jei naudoji set-scale
      - pakartotini identiski callai nieko nekeicia

panasu kad sprendimas i "istampyto staciakampio" problema yra atlikti user->device space transformacijas pries paduodant koordinates i draw biblioteka.

galima ziureti i draw biblioteka kaip i kazka paprastesnio
  - perrasyti user->device space transformacijas atskirai

x kitas variantas, visada naudoti simetrine skale
  - ai ne, tai neveiktu nes vistiek 1px storio linija nebutu 1px

===

TODO jeigu pakeiti scroll-x crashina

====

perrasineju ant julia

rodos kad cairo tik tai piesia
  - turbut reikia windowing bibliotekos kad atidaryti langa ir gauti
    interakcija ir t.t.

19-06-20

## kuriant bitmex realtime klienta

# reikalavimai ir mintys

kieno tai sistema
  - vienpuse bucketu sinchronizavimo su bitmexu sistema

matau du aspektus
  - reikia parsiusti sena informacija: kas buvo iki charto atidarymo
  - reikia parsiusti kas vyksta kol chartas atidarytas

dvi skirtingos komunikavimo sistemos yra
  - REST
    - kas buvo, gabalais
  - ws
    - kas vyksta, trupineliais

reikalavimai
  1- turi neatsirasti tarpai turimoje informacijoje
  2- turi turima informacija neatsilikti nuo bitmex'o
    - sinchronizacija turi buti greita

tarpu bruteforcinimas
  - daznai siusti senaja informacija
    - zinai kad jinai be tarpu

1- tarpai
  - ar websocket'ai garantuoja informacija be tarpu?
    - taip, websocketai veikia ant tcp, ir turi tas pacias garantijas
  - tai jeigu gali pasiekti tarpo nebuvima tarp periodo kuri parsiuncia REST ir periodo kuri parsiuncia WS, viskas ok
    - viskas ok, kol patikimas internetas
  - jeigu WS pradeda mirineti
    - reikia gebeti tai maziausiai pastebeti
    - dar geriau -- automatiskai pagydyti, rysio remuose

2- naudojant WS, tai turetu buti uztikrinta, jei geras rysys

# integracija su braizalu

tikslai:
  - bucket'u updeitinimas
  - paskutinio (partial) bucket'o updeitinimas
  - rysio gyvumo indikacija

kur lengva, siekti maksimaliai atskirti duomenu updeitinima
  - duomenu kurie yra adityvus, tai yra updeitai tik prideda, arba pakeicia
    "gala"

====

klausimai
  - kaip pereiti is websocket connection'o i bucket'u updeitinima
    - reikia susidoroti su partial bucket'u tampanciu nepartial
